//
//  BtcCreateSignTransactionParams.hpp
//  Test
//
//  Created by xgc on 12/21/17.
//  Copyright © 2017 xgc. All rights reserved.
//

#ifndef BtcCreateSignTransactionParams_hpp
#define BtcCreateSignTransactionParams_hpp

#include "../common/CreateSignTransactionParams.hpp"
#include "../common/BtSeed.hpp"
#include "../common/BtcvoutForm.hpp"

#include <vector>
using namespace std;

class BtcCreateSignTransactionParams : public CreateSignTransactionParams
{
public:
    BtcCreateSignTransactionParams() { recipientsPayFees = false; };
    BtcCreateSignTransactionParams(BtSeed btSeed, string fromAddress, string sendAddress, uint64_t sendValue,
                                   uint64_t feePerKb, vector<BtcvoutForm> btcvoutFormList, string password);
    
    BtcCreateSignTransactionParams(string fromAddress, string sendAddress, uint64_t sendValue,
                                   uint64_t feePerKb, vector<BtcvoutForm> btcvoutFormList, string priKey);
    BtSeed getBtSeed();
    string getFromAddress();
    string getSendAddress();
    uint64_t getSendValue();
    uint64_t getFeePerKb();
    string getPassword();
    string getPriKey();
    bool getRecipientsPayFees();
    vector<BtcvoutForm> getBtcvoutFormList();
    vector<uint8_t> getData();
    TxType getTxType();
    void setBtSeed(BtSeed btSeed);
    void setFromAddress(string fromAddress);
    void setSendAddress(string sendAddress);
    void setSendValue(uint64_t sendValue);
    void setFeePerKb(uint64_t feePerKb);
    void setPassword(string password);
    void setPriKey(string priKey);
    void setBtcvoutFormList(vector<BtcvoutForm> btcvoutFormList);
    void setRecipientsPayFees(bool recipientsPayFees);
    void setData(vector<uint8_t> data);
    void setTxType(TxType txType);
private:
    BtSeed btSeed;
    string fromAddress;
    string sendAddress;
    uint64_t sendValue;
    uint64_t feePerKb;
    string password;
    string priKey;
    vector<BtcvoutForm> btcvoutFormList;
    bool recipientsPayFees;
    vector<uint8_t> data;
    TxType txType;
};

#endif /* BtcCreateSignTransactionParams_hpp */
